#pragma once

#include "Authority.h"
#include "GameConfig.h"
#include "GameState.h"

class GameState;

class GamePlayer
{
public:
				GamePlayer();

	string&		getAccountName();

	unsigned
	int			getSystemUniqueID();

	virtual
	void		observeStateTransition(
					SeatNumber	seatResponsible,
					GameState*	preceding,
					GameState*	impending
				) = 0;

	virtual
	void		setAccountName(string&);

	virtual
	void		startTurn(Authority*) = 0;

private:
	friend class GamePlayerConfig;

	static
	unsigned
	int
	const		IDENTITY_NOT_ESTABLISHED = -1;
	string		accountName;
	unsigned
	int			systemUniqueID;

	void		load();

	void		save();
}; // end class
